﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace BusinessObject
{
    /// <summary>
    /// Interface para implementação de métodos de CRUD.
    /// </summary>
    /// <typeparam name="T"></typeparam>
    public interface IGenericRepository<T> : IDisposable where T : class
    {
        /// <summary>
        /// Cria a entidade.
        /// </summary>
        /// <param name="entity"></param>
        void Save(T entity);
        
        /// <summary>
        /// Edita da entidade.
        /// </summary>
        /// <param name="entity"></param>
        void Update(T entity);
        
        /// <summary>
        /// Deleta a entidade.
        /// </summary>
        /// <param name="entity"></param>
        void Delete(T entity);
        
        /// <summary>
        /// Retorna a entidade de acordo com o id passado.
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        T GetById(int id);

        /// <summary>
        /// Retorna todos os objetos da entidade.
        /// </summary>
        /// <returns></returns>
        IList<T> GetAll();

    }
}
